﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace WindowsFormsApplication1
{
    /**
    var board = [3,5,6,0,2,7,8,4,1];

    hvar emptypos = 3; //emptypos is a secondary variable, no need to put it in the state space
    
    Game() = Left() [] Right() [] Up() [] Down();
    
    Left() = [emptypos!=2&&emptypos!=5&&emptypos!=8]goleft{board[emptypos]=board[emptypos+1];board[emptypos+1]=0;emptypos=emptypos+1;} -> Game();
    Right() = [emptypos!=0&&emptypos!=3&&emptypos!=6]goright{board[emptypos]=board[emptypos-1];board[emptypos-1]=0;emptypos=emptypos-1;} -> Game();
    Up() = [emptypos!=6&&emptypos!=7&&emptypos!=8]goup{board[emptypos]=board[emptypos+3];board[emptypos+3]=0;emptypos=emptypos+3;} -> Game();
    Down() = [emptypos!=0&&emptypos!=1&&emptypos!=2]godown{board[emptypos]=board[emptypos-3];board[emptypos-3]=0;emptypos=emptypos-3;} -> Game();

    #assert Game() reaches goal;
    #define goal board[0] == 1 && board[1] == 2 && board[2] == 3 && board[3] == 4 && board[4] == 5 && board[5] == 6 && board[6] == 7 &&  board[7] == 8 && board[8] == 0;
    */





    class CSPStructure
    {
       //variables
        public ArrayList vars = new ArrayList();
        
        //process
        public String process = null;

        //event
        public ArrayList events = new ArrayList();
 
        //assert
        public ArrayList asserts = new ArrayList();

        //#define
        public ArrayList defines = new ArrayList();

    }

}
